#ifndef GAUSSIANDISTRIBUTION_H
#define	GAUSSIANDISTRIBUTION_H

#include <boost/random.hpp> //normal_distribution + variate_generator
#include <boost/random/random_device.hpp>

class GaussianDistribution {
public:
    GaussianDistribution(double mean = 0.0, double deviation = 1.0);
    virtual ~GaussianDistribution();
    double Sample();
    double mean();
    double sigma();
    static double rand(double = 0, double = 1);

private:
    boost::random::random_device *generator;
    boost::normal_distribution<double> *distribution;
    boost::variate_generator < boost::random::random_device&, boost::normal_distribution<double> > *variate_generator;
};

#endif	/* GAUSSIANDISTRIBUTION_H */
